package com.hky.maker.meta;

import cn.hutool.core.io.resource.ResourceUtil;
import cn.hutool.json.JSONUtil;

public class MetaManager {

    public static volatile Meta meta;

    // 私有构造函数，防止外部实例化
    private MetaManager(){}

    public static Meta getMetaObject(){
        // 双检锁单例模式
        // 如果meta为null，则进入同步块
        if (meta == null){
            synchronized (MetaManager.class){
                // 如果meta仍然为null，则调用initMeta()方法初始化meta
                if (meta == null){
                    meta = initMeta();
                }
            }
        }
        // 返回meta
        return meta;
    }

    private static Meta initMeta(){
        String metaJson = ResourceUtil.readUtf8Str("meta.json");
        Meta newMeta = JSONUtil.toBean(metaJson, Meta.class);
        // todo 校验配置文件，处理默认值
        return newMeta;
    }

}
